package com.zhentao.day04;

public class Person {

  String name = "人";
  boolean sex; // true : male , false : female
  int age;

  public void eat() {
    System.out.println("人类在吃饭");
  }

  public void play() {
  }
}

// 声明了一个Student的子类
class Student extends Person {
  int stuId;

  public void study() {
  }
}


class Teacher extends Person {
  int id; // 老师的工号
  String name ;

  // super() 代表调用父类构造器, 如果没写出来, 那么系统会默认提供一个无参的调用父类构造器的方法,
  // 如果显式的声明的调用父类构造器, 那么, 系统不再提供默认的super();
  // super(); 调用父类构造器 只能写在第一行。
  public Teacher (){
    super(); // new Person () ; ---->  new Object () ;
  }

  public Teacher(int id) {
    super();
  }

  public String getSuperName (){
    return super.name;
  }
  public void teach() {
  } // 老师教学的方法

  @Override
  public void eat() {
    // 调用父类的eat方法, 并且添加新的功能。
    super.eat();
    System.out.println("老师在吃饭");
  }
}

class Worker extends Person {
  int worId;

  // 构造器是可以相互调用的, this() 与 super() 不能共存的。
  // 但是, 相互调用需要给它留一个出口, 至少保留一个构造器可以实现调用super();
  public Worker() {
    this("3");
  }
  // new Worker ( 3 ) ; -> new Worker ("3"); -> new Person();
  public Worker(int worId) {
    this();
    this.worId = worId;
  }

  public Worker(String name) {
    super.name = name;
  }


  public void work() {
  }
}



// Java中单继承的关系是从父类来看, 现实生活, 人们是可以有兄弟姐妹。但人只有一个爹。